/// 队列
class MyQueue {
  List<Future Function()> _list = []; // 事件队列

  /// 入列
  push(Future Function() action) {
    _list.add(action);
    run();
  }

  /// 出列
  _shift() {
    if (_list.length <= 0) return;
    _list.removeAt(0);
  }

  /// 执行
  Future run() async {
    if (_list.length <= 0) return;
    await _list[0]();
    _shift();
    run();
  }

  void dispose() { 
    _list.clear();
  }
}